﻿Imports System.Data
Imports System.Data.OleDb

Public Class VacunasEnfermedadesOperaciones

    Public conexion As New OleDb.OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0; Data Source=nuevozoo.accdb")

    Private Sub VolverToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VolverToolStripMenuItem.Click
        Me.Close()
        GestionGeneral.Show()
    End Sub

    Private Sub cargarDatosVacunas()
        'VACUNAS---------------------------------------------------------------------

        'para vacunas
        Dim adaptador As New OleDbDataAdapter("select * from tipo_vacunas order by cod_vacuna", conexion)
        Dim miDataset As New DataSet

        'limpiar DataBlindings para que no de error 
        text_codvac.DataBindings.Clear()
        text_nombrevac.DataBindings.Clear()
        text_descvac.DataBindings.Clear()
        text_preciovac.DataBindings.Clear()

        'rellenar datagriview
        adaptador.Fill(miDataset, "tipo_vacunas")
        DataGridViewVac.DataSource = miDataset
        DataGridViewVac.DataMember = "tipo_vacunas"

        'cambiar tamaño de las columnas
        DataGridViewVac.Columns("nombre").Width = 150
        DataGridViewVac.Columns("precio").Width = 92

        'ocultar columna de codigo
        DataGridViewVac.Columns("cod_vacuna").Visible = False
        DataGridViewVac.Columns("descripcion").Visible = False

        'rellenar textbox
        text_codvac.DataBindings.Add("text", miDataset, "tipo_vacunas.cod_vacuna")
        text_nombrevac.DataBindings.Add("text", miDataset, "tipo_vacunas.nombre")
        text_descvac.DataBindings.Add("text", miDataset, "tipo_vacunas.descripcion")
        text_preciovac.DataBindings.Add("text", miDataset, "tipo_vacunas.precio")

    End Sub

    Private Sub cargarDatosEnfermedades()
        'ENFERMEDADES---------------------------------------------------------------------

        'para enfermedades
        Dim adaptador As New OleDbDataAdapter("select * from tipo_enfermedades order by cod_enfermedad", conexion)
        Dim miDataset As New DataSet

        'limpiar DataBlindings para que no de error 
        text_codenf.DataBindings.Clear()
        text_nombrenf.DataBindings.Clear()
        text_descenf.DataBindings.Clear()

        'rellenar datagriview
        adaptador.Fill(miDataset, "tipo_enfermedades")
        DataGridViewEnf.DataSource = miDataset
        DataGridViewEnf.DataMember = "tipo_enfermedades"

        'cambiar tamaño de las columnas
        DataGridViewEnf.Columns("nombre").Width = 160

        'ocultar columna de codigo
        DataGridViewEnf.Columns("cod_enfermedad").Visible = False
        DataGridViewEnf.Columns("descripcion").Visible = False
       
        'rellenar textbox
        text_codenf.DataBindings.Add("text", miDataset, "tipo_enfermedades.cod_enfermedad")
        text_nombrenf.DataBindings.Add("text", miDataset, "tipo_enfermedades.nombre")
        text_descenf.DataBindings.Add("text", miDataset, "tipo_enfermedades.descripcion")

    End Sub

    Private Sub cargarDatosOperaciones()
        'OPERACIONES---------------------------------------------------------------------

        'para operaciones
        Dim adaptador As New OleDbDataAdapter("select * from tipo_operaciones order by cod_operacion", conexion)
        Dim miDataset As New DataSet

        'limpiar DataBlindings para que no de error 
        text_codop.DataBindings.Clear()
        text_nombreop.DataBindings.Clear()
        text_descop.DataBindings.Clear()
        text_precioop.DataBindings.Clear()

        'rellenar datagriview
        adaptador.Fill(miDataset, "tipo_operaciones")
        DataGridViewOpe.DataSource = miDataset
        DataGridViewOpe.DataMember = "tipo_operaciones"

        'cambiar tamaño de las columnas
        DataGridViewOpe.Columns("nombre").Width = 150
        DataGridViewOpe.Columns("precio").Width = 92

        'ocultar columna de codigo
        DataGridViewOpe.Columns("cod_operacion").Visible = False
        DataGridViewOpe.Columns("descripcion").Visible = False

        'rellenar textbox
        text_codop.DataBindings.Add("text", miDataset, "tipo_operaciones.cod_operacion")
        text_nombreop.DataBindings.Add("text", miDataset, "tipo_operaciones.nombre")
        text_descop.DataBindings.Add("text", miDataset, "tipo_operaciones.descripcion")
        text_precioop.DataBindings.Add("text", miDataset, "tipo_operaciones.precio")
    End Sub

    Private Sub BotonesHabilitados(ByVal modo As Boolean)
        b_añadirop.Enabled = modo
        b_eliminarop.Enabled = modo
        b_modificarop.Enabled = modo
        b_nuevovop.Enabled = modo

        b_añadirvac.Enabled = modo
        b_eliminarvac.Enabled = modo
        b_modificarvac.Enabled = modo
        b_nuevovac.Enabled = modo

        b_añadirenf.Enabled = modo
        b_eliminarenf.Enabled = modo
        b_modificarenf.Enabled = modo
        b_nuevoenf.Enabled = modo
    End Sub

    Private Sub VacunasEnfermedadesOperaciones_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarDatosVacunas()
        cargarDatosEnfermedades()
        cargarDatosOperaciones()
    End Sub


    Private Sub b_añadirvac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_añadirvac.Click
        'sacar ultimo codigo de vacuna usado
        Dim cmd As New OleDbCommand("select max(cod_vacuna) from tipo_vacunas", conexion)
        conexion.Open()
        Dim a As Object = cmd.ExecuteScalar
        Dim codMaxUsado As String = a.ToString
        Dim codNuevo As Integer = codMaxUsado + 1 'codigo del nuevo registro

        If text_nombrevac.Text <> "" And text_preciovac.Text <> "" Then
            'introducir nuevo registro
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("INSERT INTO tipo_vacunas VALUES(" & codNuevo & ",'" & text_nombrevac.Text & "','" & text_descvac.Text & "','" & text_preciovac.Text & "' )", conexion)
            myCommand.ExecuteNonQuery()
        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        
        conexion.Close()
        cargarDatosVacunas()

        'deshabilito el boton añadir nuevamente y habilito los datagridview y demas botones
        BotonesHabilitados(True)
        b_añadirvac.Enabled = False
        b_añadirop.Enabled = False
        b_añadirenf.Enabled = False
        DataGridViewVac.Enabled = True
        DataGridViewOpe.Enabled = True
        DataGridViewEnf.Enabled = True

    End Sub

    Private Sub b_nuevovac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_nuevovac.Click
        'bloqueo los datagridview para que no se pueda modificar a pincho
        DataGridViewVac.Enabled = False
        DataGridViewOpe.Enabled = False
        DataGridViewEnf.Enabled = False

        'desbloqueo el boton añadir que viene bloqueado por defecto dejando el resto bloqueados
        BotonesHabilitados(False)
        b_añadirvac.Enabled = True

        text_codvac.Text = "Se autorrellena"
        text_nombrevac.Text = ""
        text_descvac.Text = ""
        text_preciovac.Text = ""

    End Sub

    Private Sub b_nuevovop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_nuevovop.Click
        'bloqueo los datagridview para que no se pueda modificar a pincho
        DataGridViewVac.Enabled = False
        DataGridViewOpe.Enabled = False
        DataGridViewEnf.Enabled = False

        'desbloqueo el boton añadir que viene bloqueado por defecto dejando el resto bloqueados
        BotonesHabilitados(False)
        b_añadirop.Enabled = True

        text_codop.Text = "Se autorrellena"
        text_nombreop.Text = ""
        text_descop.Text = ""
        text_precioop.Text = ""
    End Sub


    Private Sub b_añadirop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_añadirop.Click
        'sacar ultimo codigo de operacion usado
        Dim cmd As New OleDbCommand("select max(cod_operacion) from tipo_operaciones", conexion)
        conexion.Open()
        Dim a As Object = cmd.ExecuteScalar
        Dim codMaxUsado As String = a.ToString
        Dim codNuevo As Integer = codMaxUsado + 1 'codigo del nuevo registro

        If text_nombreop.Text <> "" And text_precioop.Text <> "" Then
            'introducir nuevo registro
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("INSERT INTO tipo_operaciones VALUES(" & codNuevo & ",'" & text_nombreop.Text & "','" & text_descop.Text & "','" & text_precioop.Text & "' )", conexion)
            myCommand.ExecuteNonQuery()
        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        conexion.Close()
        cargarDatosOperaciones()

        'deshabilito el boton añadir nuevamente y habilito los datagridview y demas botones
        BotonesHabilitados(True)
        b_añadirop.Enabled = False
        b_añadirenf.Enabled = False
        b_añadirvac.Enabled = False
        DataGridViewVac.Enabled = True
        DataGridViewOpe.Enabled = True
        DataGridViewEnf.Enabled = True
    End Sub

    Private Sub b_nuevoenf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_nuevoenf.Click
        'bloqueo los datagridview para que no se pueda modificar a pincho
        DataGridViewVac.Enabled = False
        DataGridViewOpe.Enabled = False
        DataGridViewEnf.Enabled = False

        'desbloqueo el boton añadir que viene bloqueado por defecto dejando el resto bloqueados
        BotonesHabilitados(False)
        b_añadirenf.Enabled = True

        text_codenf.Text = "Se autorrellena"
        text_nombrenf.Text = ""
        text_descenf.Text = ""
    End Sub

    Private Sub b_añadirenf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_añadirenf.Click
        'sacar ultimo codigo de enfermedad usado
        Dim cmd As New OleDbCommand("select max(cod_enfermedad) from tipo_enfermedades", conexion)
        conexion.Open()
        Dim a As Object = cmd.ExecuteScalar
        Dim codMaxUsado As String = a.ToString
        Dim codNuevo As Integer = codMaxUsado + 1 'codigo del nuevo registro

        If text_nombrenf.Text <> "" Then
            'introducir nuevo registro
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("INSERT INTO tipo_enfermedades VALUES(" & codNuevo & ",'" & text_nombrenf.Text & "','" & text_descenf.Text & "' )", conexion)
            myCommand.ExecuteNonQuery()

        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        conexion.Close()
        cargarDatosEnfermedades()

        'deshabilito el boton añadir nuevamente y habilito los datagridview y demas botones
        BotonesHabilitados(True)
        b_añadirop.Enabled = False
        b_añadirenf.Enabled = False
        b_añadirvac.Enabled = False
        DataGridViewVac.Enabled = True
        DataGridViewOpe.Enabled = True
        DataGridViewEnf.Enabled = True
    End Sub

    Private Sub b_eliminarvac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_eliminarvac.Click
        'borrar vacuna seleccionada
        Dim res As Integer
        res = MsgBox("¿Está seguro de borrar el tipo de vacuna?", MsgBoxStyle.YesNo, "Aviso")
        If res = vbYes Then
            conexion.Open()
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("delete from tipo_vacunas where cod_vacuna = " & text_codvac.Text, conexion)
            myCommand.ExecuteNonQuery()
            conexion.Close()
            cargarDatosVacunas()
        End If
    End Sub

    Private Sub b_eliminarop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_eliminarop.Click
        'borrar operacion seleccionada
        Dim res As Integer
        res = MsgBox("¿Está seguro de borrar el tipo de operación?", MsgBoxStyle.YesNo, "Aviso")
        If res = vbYes Then
            conexion.Open()
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("delete from tipo_operaciones where cod_operacion = " & text_codop.Text, conexion)
            myCommand.ExecuteNonQuery()
            conexion.Close()
            cargarDatosOperaciones()
        End If
    End Sub

    Private Sub b_eliminarenf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_eliminarenf.Click
        'borrar enfermedad seleccionada
        Dim res As Integer
        res = MsgBox("¿Está seguro de borrar el tipo de enfermedad?", MsgBoxStyle.YesNo, "Aviso")
        If res = vbYes Then
            conexion.Open()
            Dim myCommand As OleDbCommand
            myCommand = New OleDbCommand("delete from tipo_enfermedades where cod_enfermedad = " & text_codenf.Text, conexion)
            myCommand.ExecuteNonQuery()
            conexion.Close()
        End If
    
        cargarDatosEnfermedades()
    End Sub

    Private Sub b_modificarvac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_modificarvac.Click
        If text_nombrevac.Text <> "" And text_preciovac.Text <> "" Then
            'modificar la vacuna seleccionada
            Dim res As Integer
            res = MsgBox("¿Está seguro de modificar el tipo de vacuna?", MsgBoxStyle.YesNo, "Aviso")
            If res = vbYes Then
                conexion.Open()
                Dim myCommand As OleDbCommand
                myCommand = New OleDbCommand("update tipo_vacunas set nombre ='" & text_nombrevac.Text & "', precio = '" & text_preciovac.Text & "', descripcion = '" & text_descvac.Text & "' where cod_vacuna = " & text_codvac.Text, conexion)
                myCommand.ExecuteNonQuery()
                conexion.Close()
            End If
        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        cargarDatosVacunas()

    End Sub

    Private Sub b_modificarop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_modificarop.Click
        If text_nombreop.Text <> "" And text_precioop.Text <> "" Then
            'modificar la operacion seleccionada
            Dim res As Integer
            res = MsgBox("¿Está seguro de modificar el tipo de operación?", MsgBoxStyle.YesNo, "Aviso")
            If res = vbYes Then
                conexion.Open()
                Dim myCommand As OleDbCommand
                myCommand = New OleDbCommand("update tipo_operaciones set nombre ='" & text_nombreop.Text & "', precio = '" & text_precioop.Text & "', descripcion = '" & text_descop.Text & "' where cod_operacion = " & text_codop.Text, conexion)
                myCommand.ExecuteNonQuery()
                conexion.Close()
            End If
        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        cargarDatosOperaciones()
    End Sub

    Private Sub b_modificarenf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_modificarenf.Click
        If text_nombrenf.Text <> "" Then
            'modificar la enfermedad seleccionada
            Dim res As Integer
            res = MsgBox("¿Está seguro de modificar el tipo de enfermedad?", MsgBoxStyle.YesNo, "Aviso")
            If res = vbYes Then
                conexion.Open()
                Dim myCommand As OleDbCommand
                myCommand = New OleDbCommand("update tipo_enfermedades set nombre ='" & text_nombrenf.Text & "', descripcion = '" & text_descenf.Text & "' where cod_enfermedad = " & text_codenf.Text, conexion)
                myCommand.ExecuteNonQuery()
                conexion.Close()
            End If
        Else
            MsgBox("Sólo el campo de descripción puede estar vacío", , "Error")
        End If
        cargarDatosEnfermedades()
    End Sub


    Private Sub text_preciovac_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles text_preciovac.Validating
        If Not IsNumeric(text_preciovac.Text) Then
            text_preciovac.Text = 0
        End If
    End Sub

    Private Sub text_precioop_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles text_precioop.Validating
        If Not IsNumeric(text_precioop.Text) Then
            text_precioop.Text = 0
        End If
    End Sub
End Class